package cn.coisini.service;

import cn.coisini.model.common.dtos.Result;
import cn.coisini.model.common.enums.ResultEnum;
import cn.coisini.model.dto.ArticleDto;
import cn.coisini.model.dto.UserSearchDto;
import cn.coisini.model.pojo.Article;
import cn.coisini.model.vo.QueryVo;

import java.util.List;

/**
 * @author xiangshaw
 * Description: 文章接口
 */
public interface ArticleService {
    // 新增文章
    Result<ResultEnum> addArticle(ArticleDto articleDto);
    // 分页条件查询文章列表
    Result<Object> getArticleList(QueryVo queryVo);
    // 根据id查询文章详情
    Result<Article> getArticleById(String articleId);
    // 根据ids查询文章列表
    List<Article> findByIds(List<String> articleIds);
    // 根据id删除文章
    Result<ResultEnum> deleteArticle(String articleId);
    // 更新文章
    Result<ResultEnum> updateArticle(ArticleDto articleDto);
    // 根据类别id查询文章数
    long getArticleCountByCategoryId(String categoryId);
    // 根据分类ids查询文章
    List<Article> getArticleListByIds(List<String>  categoryIds);
    // 根据标签查询文章列表
    List<Article> getArticleListFromTag(String tagId);
    // 根据搜索关键词获取文章
    Result<Object> getUserSearchArticle(UserSearchDto userSearchDto);

    // 根据用户id获取用户发布文章数
    long getArticleCountByUserId(String userId, short state);
}
